
import java.beans.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JOptionPane;

/**
 *
 * @author Bárbara
 */
public class GerenciaCandidato {
    
    private GerenciaBanco banco;

	public GerenciaCandidato() {
		this.banco = new GerenciaBanco();
	}

	// retorna todos os funcionários
	public Iterator<Candidato> get() throws SQLException, BancoException {
		PreparedStatement pst = this.banco.getConexao().prepareStatement(
				"select nome from candidato order by nome");
		ResultSet rs = pst.executeQuery();
		Candidato c;
		ArrayList<Candidato> lista = new ArrayList<Candidato>();

		while (rs.next()) {
			c = new Candidato();
			c.setNome(rs.getString(1));
			lista.add(c);
		}
		return lista.iterator();
	}

	//cadastra um funcionário no banco
	public void cadastrarCandidato(String nome, String cargo, int cod_m) throws Exception {
		
		PreparedStatement pst = this.banco.getConexao().prepareStatement(
				"insert into candidato values(?,?,?)");
                
		pst.setString(1, nome);
		pst.setString(2, cargo);
		pst.setInt(3, cod_m);
                
		boolean rs1 = pst.execute();
		if (!rs1){
		    JOptionPane.showMessageDialog(null,"Candidato cadastradO =D");
		}
               
	}

    public void deletar(String nome) throws SQLException, BancoException {

        if (getNome(nome) == null) {
            System.out.println("Candidato não encontrado!");
        } else {
            PreparedStatement pst = this.banco.getConexao().prepareStatement(
                "DELETE FROM candidato WHERE nome=?");

              pst.setString(1, nome);
            pst.execute();
            JOptionPane.showMessageDialog(null, "Candidato Removido com sucesso!");
        }
    }

    private Object getNome(String nome) throws SQLException,BancoException {
		PreparedStatement pst = this.banco
				.getConexao()
				.prepareStatement(
						"select nome from candidato where nome = ? order by nome");
		pst.setString(1, nome);
		ResultSet rs = pst.executeQuery();
		Candidato c = new Candidato();

		if (rs.next()) {
			c.setNome(rs.getString(1));
			return c;
		}

		throw new BancoException("Candidato não localizado");
    }
    
    public void alterarCandidato(String nomeatual, String cargo, String nome) throws BancoException, SQLException{
        
        PreparedStatement pst = this.banco
				.getConexao()
				.prepareStatement("update candidato set nome=?, cargo=? where nome = ?");
     
        pst.setString(1, nome);
        pst.setString(2, cargo);
        pst.setString(3, nomeatual);
        pst.execute();
        
        JOptionPane.showMessageDialog(null,"Dados alterados");
    }  
    
    
	 
}
